<?php

/**
 * This is the model class for table "tbl_alumno".
 *
 * The followings are the available columns in table 'tbl_alumno':
 * @property integer $alumno_persona_tipodocumento_id
 * @property string $alumno_persona_numerodocumento
 * @property integer $alumno_legajo
 * @property string $alumno_observacion
 */
class Alumno extends MyCActiveRecord
{
	public $alumno_persona_apellido;
	public $alumno_persona_nombres;
	public $alumno_tipodocumento_abreviacion;
	/**
	 * Returns the static model of the specified AR class.
	 * @return Alumno the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_alumno';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('alumno_persona_tipodocumento_id, alumno_persona_numerodocumento', 'required'),
			array('alumno_persona_tipodocumento_id, alumno_legajo', 'numerical', 'integerOnly'=>true),
			array('alumno_persona_numerodocumento', 'length', 'max'=>50),
			array('alumno_observacion', 'safe'),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('alumno_persona_apellido,alumno_persona_nombres,alumno_tipodocumento_abreviacion,alumno_persona_tipodocumento_id, alumno_persona_numerodocumento, alumno_legajo, alumno_observacion', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
					'persona' => array(
									self::BELONGS_TO, 
									'Persona',
									'alumno_persona_numerodocumento,alumno_persona_tipodocumento_id'),
					'usuarioCreador' => array(self::BELONGS_TO, 'Usuario', 'alumno_creado_usuario_id'),
					'usuarioModificador' => array(self::BELONGS_TO, 'Usuario', 'alumno_modificado_usuario_id'),
					'tipoDocumento' => array(self::BELONGS_TO, 'TipoDocumento', 'alumno_persona_tipodocumento_id'),
					
					
					
					
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'alumno_persona_tipodocumento_id' => t('Tipo de Documento','persona_etiqueta'),
			'alumno_persona_numerodocumento' => t('Numero de Documento','persona_etiqueta'),
			'alumno_legajo' => t('Legajo','persona_etiqueta'),
			'alumno_observacion' => t('Observacion','nucleo_etiqueta'),
			
			'alumno_persona_apellido' => t('Apellido','persona_etiqueta'),
			'alumno_persona_nombres' => t('Nombres','persona_etiqueta'),
			'alumno_tipodocumento_abreviacion' => t('Tipo de Documento','persona_etiqueta'),
			
			
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;
		$criteria->compare('alumno_persona_tipodocumento_id',$this->alumno_persona_tipodocumento_id);
		$criteria->compare('alumno_persona_numerodocumento',$this->alumno_persona_numerodocumento,true);
		$criteria->compare('alumno_legajo',$this->alumno_legajo);
		$criteria->compare('alumno_observacion',$this->alumno_observacion,true);
		
		$criteria->compare('alumno_observacion',$this->alumno_observacion,true);
		
		
		$criteria->with = array('persona','tipoDocumento');
		$criteria->compare('persona.persona_apellido',$this->alumno_persona_apellido,true);
		$criteria->compare('persona.persona_nombres',$this->alumno_persona_nombres,true);
		//$criteria->compare('tipoDocumento.tipodocumento_abreviacion',$this->alumno_tipodocumento_abreviacion,true);
		/*
		if($this->alumno_persona_apellido != '' || $this->alumno_persona_nombres !='')
		{
			$criteria->together  =  true;
			
			
		}
		
	
		
		if($this->alumno_tipodocumento_abreviacion != '' )
		{
			$criteria->together  =  true;
			$criteria->with = array_push($criteria->with,'tipoDocumento');
			$criteria->compare('tipoDocumento.tipodocumento_abreviacion',$this->alumno_tipodocumento_abreviacion,true);
		}
		*/
		
		$sort = array('attributes'=>array(
            								'alumno_persona_apellido'=>array(
                								'asc'=>'persona.persona_apellido',
                								'desc'=>'persona.persona_apellido DESC',
            								),
            								'alumno_persona_nombres'=>array(
                								'asc'=>'persona.persona_nombres',
                								'desc'=>'persona.persona_nombres DESC',
            								),
            								'*',
        								),
        			'defaultOrder'=>array('alumno_persona_apellido'=>false,'alumno_persona_nombres'=>false),
    	);
		
		if(!user()->isSuperuser)
		{
			$criteria->addCondition('alumno_estado_id <> ' .AplicacionVariables::ESTADO_ELIMINADO_ID); 
		}
		
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
			'sort'=>$sort,
		));
	}
	
	public function primaryKey()
	{
		return array('alumno_persona_tipodocumento_id','alumno_persona_numerodocumento' );
		// For composite primary key, return an array like the following
		// return array('pk1', 'pk2');
	}
	
	public function beforeSave()
	{
		parent::beforeSave();
		
		if($this->isNewRecord)
		{
			$maxOrderNumber = Yii::app()->db->createCommand()
			->select('MAX(alumno_legajo) as max')
			->from($this->tableName())
			->queryScalar();
			$this->alumno_legajo = $maxOrderNumber + 1;
			//$this->alumno_legajo = date('Y-m-d H:i:s', strtotime(str_replace('/','-',$this->usuario_creado)));
		}
		return true;
	}
	
}